package com.luoguijia.disk.login.service;

import com.luoguijia.disk.login.entity.MenuLeveEntity;
import com.luoguijia.disk.login.entity.UserEntity;
import com.luoguijia.disk.mybatis.entity.PtMenuEntity;
import com.luoguijia.disk.mybatis.entity.PtUserEntity;
import org.springframework.http.ResponseEntity;

import java.util.List;

public interface LoginService {
    /**
     * 原有：查询用户信息
     * @param username 用户名称
     * @return 用户实体
     */
    PtUserEntity queryUserInfoByName(String username);

    /**
     * 原有：查询菜单列表
     * @return 菜单列表
     */
    List<PtMenuEntity> queryMenuList();

    /**
     * 原有：查询分级菜单列表
     * @return 分级菜单列表
     */
    List<MenuLeveEntity> queryMenuListLevel();

    /**
     * 原有：根据用户UUID查询权限列表
     * @param userUuid 用户唯一标识
     * @return 权限列表
     */
    List<String> queryPermissionList(String userUuid);

    /**
     * 原有：更新用户密码
     * @param userUuid 用户唯一标识
     * @param newPassword 新密码
     */
    void updatePassword(String userUuid, String newPassword);

    /**
     * 原有：重置单个用户密码
     * @param userId 用户ID
     */
    void resetPassword(Long userId);

    /**
     * 原有：发送手机验证码
     * @param phone 手机号
     * @return 验证码
     */
    String sendVerificationCode(String phone);

    /**
     * 原有：通过邮箱发送验证码
     * @param email 用户邮箱
     * @return 验证码
     */
    String sendVerificationCodeByEmail(String email);

    /**
     * 原有：验证登录（密码校验）
     * @param username 用户名
     * @param password 密码
     * @return 验证结果
     */
    boolean verifyLogin(String username, String password);

    /**
     * 原有：验证邮箱验证码
     * @param email 邮箱
     * @param code 验证码
     * @return 验证结果
     */
    boolean verifyEmailCode(String email, String code);

    /**
     * 原有：用户注册
     * @param user 用户信息
     * @param verificationCode 验证码
     * @return 注册结果
     */
    boolean registerUser(UserEntity user, String verificationCode);

    /**
     * 原有：批量重置密码
     * @param userIds 用户ID列表
     */
    void batchResetPassword(List<Long> userIds);

    /**
     * 原有：生成验证码图片
     * @return 验证码图片响应
     */
    ResponseEntity<byte[]> getVerifyImag();


//    boolean verifyCaptcha(String inputCode);
}